﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Modelo_ETdA.Negocio.AmbienteComercial;
using Modelo_ETdA.Negocio.Analise.Formato;
using Modelo_ETdA.Negocio.Analise;
namespace Modelo_ETdA.Interface
{


    public partial class VerFormatoAnalista : Form
    {
        private Negocio.Analise.GestorAnalise gestor_analise;
        private DataTable tabela = new DataTable();
        private MenuAnaliseETdA mAnaEtda;
        private AmbienteComercial ambC;
        private Dictionary<string, Divisao> dicDivs = new Dictionary<string, Divisao>();

        public VerFormatoAnalista(GestorAnalise gest_analise, MenuAnaliseETdA menu, int codFormato)
        {
            InitializeComponent();
            this.mAnaEtda = menu;
            this.gestor_analise = gest_analise;
            this.ambC = gestor_analise.AmbComercialSessao;
            FormatoAvaliacaoAnalista formato = (FormatoAvaliacaoAnalista)gestor_analise.consultaFormatoAvaliacao(codFormato, 3, gestor_analise.AmbComercialSessao.Cabeçalho.Cod);
            Dictionary<int, List<QuestaoAnalista>> mapDivisaoQuestao = formato.MapDivisaoQuestao;

            nomeFormato.Text = formato.Nome;
            minLum.Text = formato.MinLum + " lm";
            maxLum.Text = formato.MaxLum + " lm";
            minRuido.Text = formato.MinRuido + " db";
            maxRuido.Text = formato.MaxRuido + " db";
            minTemp.Text = formato.MinTemp + " ºC";
            maxTemp.Text = formato.MaxTemp + " ºC";

            tabela.Columns.Add("Codigo");
            tabela.Columns.Add("Considerações");
            char tipo = '\0';
            if (ambC.orientadoZona)
                tipo = 'Z';
            else tipo = 'T';

            List<Divisao> listaZonas = ambC.listDivisao;
            foreach (Divisao div in listaZonas)
            {
                tabela.Columns.Add(tipo + "" + div.CodRelativo + " - " + div.Descricao);
                dicDivs.Add(tipo + "" + div.CodRelativo + " - " + div.Descricao, div);
            }

            List<Consideracao> consideracoes = gest_analise.consultaListaConsideracao();
            foreach (Consideracao con in consideracoes)
            {
                DataRow row = tabela.NewRow();
                row[0] = con.Cod;
                row[1] = con.Descricao;
                tabela.Rows.Add(row);
            }
            for (int m = 0; m < listaZonas.Count; m++)
            {
                int posZona = m + 2;
                Divisao div = dicDivs[tabela.Columns[posZona].ColumnName];
                List<QuestaoAnalista> listQuest = mapDivisaoQuestao[div.CodBD];
                Console.Write(dicDivs[tabela.Columns[posZona].ColumnName].Descricao);
                for (int j = 0; j < consideracoes.Count; j++)
                {
                    if (consideracoes[j].Cod == Convert.ToInt32(tabela.Rows[j][0]))
                    {
                        foreach (QuestaoAnalista qa in listQuest)
                        {
                            if (qa.CodDivisao == div.CodBD && qa.CodConsideracao == consideracoes[j].Cod)
                            {
                                tabela.Rows[j][posZona] = qa.MinResposta;
                            }
                        }
                    }
                }
            }
            tabelaMinimos.DataSource = tabela;
            tabelaMinimos.Columns[0].Visible = false;
            for (int l = 0; l < tabelaMinimos.Columns.Count; l++)
            {
                tabelaMinimos.Columns[l].ReadOnly = true;
            }
        }

        private void voltar_Click(object sender, EventArgs e)
        {
            mAnaEtda.Visible = true;
            this.Visible = false;
        }
    }
}
